package com.nuo.common.quartz.core.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 任务列表
 *
 * @TableName quartz_job
 */
@TableName(value = "quartz_job")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class QuartzJobDO implements Serializable {
    /**
     * 任务调度参数key
     * 追溯源码发现，在org.quartz.utils.DirtyFlagMap中的DirtyFlagMap方法（77行）中，
     * 调度任务的参数getJobDataMap实质上是一个HashMap，在这个体系中，约定所有调度任务
     * 的参数都是一个JSON字符串，这就需要一个公用的KEY保证在后续过程中能拿出作为参数的JSON字符串
     * 任务调度参数key
     */
    public static final String JOB_PARAM_KEY = "NUO_JOB_PARAM_KEY";
    /**
     * 任务id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 任务模式 1.bean模式  2.http模式
     */
    @TableField(value = "job_mode")
    private Integer jobMode;

    /**
     * jobMode =1: 执行Bean名称,jobMode =2:调度接口地址，一般为开放接口
     */
    @TableField(value = "bean_name")
    private String beanName;

    /**
     * 执行参数，JSON字符串
     */
    @TableField(value = "params")
    private String params;

    /**
     * cron表达式
     */
    @TableField(value = "cron")
    private String cron;

    /**
     * 任务状态：1正常，2暂停，3删除
     */
    @TableField(value = "state")
    private Integer state;

    /**
     * 备注
     */
    @TableField(value = "remark")
    private String remark;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    private Date createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time")
    private Date updateTime;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

}